

package v2store

// eventQueue是一个先进先出的、环形的Event队列，
type eventQueue struct {
	Events   []*Event	// 底层真正存储Event实例的数组。
	Size     int	// 当前Events字段中存储的Event实例个数。
	Front    int	// eventQueue队列中第一个元素的下标值。
	Back     int	// eventQueue队列中第一个元素的下标值。
	Capacity int	// Events宇段的长度。
}

// 当eventQueue被填满之后，继续向其中添加Event，则会导致最先添加的Event实例被覆盖，
func (eq *eventQueue) insert(e *Event) {
	eq.Events[eq.Back] = e	// 添加Event实例
	eq.Back = (eq.Back + 1) % eq.Capacity	// 后移Back
	if eq.Size == eq.Capacity { // 当队列满了的时候，则后移Front，抛弃Front指向的Event实例
		eq.Front = (eq.Front + 1) % eq.Capacity
	} else {
		eq.Size++	// 当队列没满的时候，增加size
	}
}
